Programmable integrated circuits (ICs) include programmable logic and routing resources that can be programmed to perform specified logic functions. One type of programmable IC, the field programmable gate array (FPGA), typically includes an array of programmable tiles. Each programmable tile typically includes both programmable interconnects and programmable logic circuits. The programmable interconnects may include a large number of interconnect lines of varying lengths interconnected by programmable interconnect points (PIPs). The programmable logic circuits implement the logic of a user design using programmable elements that can include, for example, function generators, registers, arithmetic logic, and so forth.
The programmable interconnects and programmable logic circuits are typically programmed to implement a user design by loading a configuration datastream into internal configuration memory cells that define how the programmable resources are configured. The configuration datastream can be read from memory (e.g., from an external PROM) or written into the FPGA by an external device. The collective states of the individual memory cells then determine the function of the programmable resources.
In addition to the programmable resources, an FPGA may include a number of hard-wired logic circuits that may be utilized by a user design implemented in the programmable resources. Hard-wired logic circuits may include, for example, input/output circuits, memory blocks, digital signal processing blocks (DSPs), processors, clock managers, delay lock loops (DLLs), Fourier transforms, and/or bus or network interfaces such as Peripheral Component Interconnect Express (PCIe) and Ethernet, and so forth.